home *** CD-ROM | disk | FTP | other *** search
Oberon Text | 1996-02-22 | 11.9 KB | 488 lines |
- Syntax10.Scn.Fnt
- Syntax10b.Scn.Fnt
- MODULE AmigaGraphics; (*shml/cn 15-Mar-1993 *)
- IMPORT
- SYSTEM, A:=AmigaBase,E:=AmigaExec;
- CONST
- graphicsName*="graphics.library";
- hiresLaceKey*=00008004H;
- (* drawing modes as Flags, not Bitposition *)
- jam1*=0;
- jam2*=1;
- complement*=2;
- inversvid*=4;
- (* Layer Flags *)
- layerSimple*=0;
- layerBackdrop*=6;
- (* AllocBitMap Flags *)
- bmbClear*= 0;
- bmbDisplayable*= 1;
- bmbInterleaved*= 2;
- bmbStandard*= 3;
- bmbMinplanes*= 4;
- Some Pointer without their records
- AreaInfoPtr*=LONGINT;
- ClipRectPtr*=LONGINT;
- ColorMapPtr*=LONGINT;
- CopListPtr*=LONGINT;
- GelsInfoPtr*=LONGINT;
- HookPtr*=LONGINT;
- LayerPtr*=LONGINT;
- LayerInfoPtr*=LONGINT;
- PlanePtr*=LONGINT;
- RasInfoPtr*=LONGINT;
- RastPortPtr*=LONGINT;
- RegionPtr*=LONGINT;
- RectanglePtr*=LONGINT;
- TmpRasPtr*=LONGINT;
- UCopListPtr*=LONGINT;
- LayerInfo*=RECORD
- layer*:LayerPtr;
- lp*:LayerPtr; (* system use *)
- obs*:ClipRectPtr;
- freeClipRects*:E.MinList;
- lock*:E.SignalSemaphore;
- head*:E.List;
- longreserved*:LONGINT;
- flags*:INTEGER;
- count*:SHORTINT;
- lockLayersCount*:SHORTINT;
- layerInfoExtraSize*:INTEGER;
- blitbuff*:LONGINT;
- layerInfoExtra*:E.PROC
- END;
- ViewPortPtr*=LONGINT;
- ViewPort*=RECORD
- next*:ViewPortPtr;
- colorMap*:ColorMapPtr;
- dspIns*:CopListPtr;
- sprIns*:CopListPtr;
- clrIns*:CopListPtr;
- uCopIns*:UCopListPtr;
- dWidth*,dHeight*:INTEGER;
- dxOffset*,dyOffset*:INTEGER;
- modes*:INTEGER;
- spritePriorities*:SHORTINT;
- extendedModes*:SHORTINT;
- rasInfo*:RasInfoPtr
- END;
- TextAttr*=RECORD
- name*:LONGINT;
- ySize*:INTEGER;
- style*:SHORTINT;
- flags*:SHORTINT
- END;
- TextAttrPtr*=LONGINT;
- TextFont*=RECORD
- message*:E.Message;
- ySize*:INTEGER;
- style*:SHORTINT;
- flags*:SHORTINT;
- xSize*:INTEGER;
- baseline*:INTEGER;
- boldSmear*:INTEGER;
- accessors*:INTEGER;
- loChar*:CHAR;
- hiChar*:CHAR;
- charData*:LONGINT;
- modulo*:INTEGER;
- charLoc*:LONGINT;
- charSpace*:LONGINT;
- charKern*:LONGINT
- END;
- TextFontPtr*=LONGINT;
- BitMap*=RECORD
- bytesPerRow*:INTEGER;
- rows*:INTEGER;
- flags*:SHORTINT;
- depth*:SHORTINT;
- pad*:INTEGER;
- planes*:ARRAY 8 OF PlanePtr
- END;
- BitMapPtr*=LONGINT;
- BitMapPointer*=POINTER TO BitMap;
- Rectangle*=RECORD
- minX*,minY*,maxX*,maxY*:INTEGER
- END;
- LayerPointer*=POINTER TO Layer;
- Layer*=RECORD
- front*:LayerPtr;
- back*:LayerPtr;
- clipRect*:ClipRectPtr;
- rp*:RastPortPtr;
- bounds*:Rectangle;
- reserved:ARRAY 4 OF SYSTEM.BYTE;
- priority*:INTEGER;
- flags*:INTEGER;
- superBitMap*:BitMapPtr;
- superClipRect*:ClipRectPtr;
- window*:LONGINT;
- scrollX*:INTEGER;
- scrollY*:INTEGER;
- cr*:ClipRectPtr;
- cr2*:ClipRectPtr;
- crnew*:ClipRectPtr;
- superSaveClipRects*:ClipRectPtr;
- cliprects*:ClipRectPtr;
- layerInfo*:LayerInfoPtr;
- lock*:E.SignalSemaphore;
- backFill*:HookPtr;
- reserved1:LONGINT;
- clipRegion*:RegionPtr;
- saveClipRects*:RegionPtr;
- width*,height*:INTEGER;
- reserved2:ARRAY 18 OF SYSTEM.BYTE;
- damageList*:RegionPtr
- END;
- RastPortPointer*=POINTER TO RastPort;
- RastPort*=RECORD
- layer*:LayerPtr;
- bitMap*:BitMapPtr;
- areaPtrn*:LONGINT;
- tmpRas*:TmpRasPtr;
- areaInfo*:AreaInfoPtr;
- gelsInfo*:GelsInfoPtr;
- mask*:SHORTINT;
- fgPen*:SHORTINT;
- bgPen*:SHORTINT;
- aOlPen*:SHORTINT;
- drawMode*:SHORTINT;
- areaPtSz*:SHORTINT;
- linPatCnt*:SHORTINT;
- dummy*:SHORTINT;
- flags*:INTEGER;
- linePtrn*:INTEGER;
- x*,y*:INTEGER;
- minterms*:ARRAY 8 OF SHORTINT;
- penWidth*:INTEGER;
- penHeight*:INTEGER;
- font*:TextFontPtr;
- algoStyle*:SHORTINT;
- txFlags*:SHORTINT;
- txHeigh*:INTEGER;
- txWidth*:INTEGER;
- txBaselin*:INTEGER;
- txSpacing*:INTEGER;
- user*:LONGINT;
- longreserved*:ARRAY 2 OF LONGINT;
- wordreserved*:ARRAY 7 OF INTEGER;
- reserved*:ARRAY 8 OF SHORTINT
- END;
- gfxBase:LONGINT;
- gfxVersion-:INTEGER;
- PROCEDURE AddFont*(textFontPtr:TextFontPtr);
- r:A.Regs;
- BEGIN
- r.a[1]:=textFontPtr;
- A.LibCall(gfxBase,-480,r)
- END AddFont;
- PROCEDURE AllocRaster*(width,height:INTEGER):PlanePtr;
- r:A.Regs;
- BEGIN
- r.d[0]:=width;
- r.d[1]:=height;
- A.LibCall(gfxBase,-492,r);
- RETURN r.d[0]
- END AllocRaster;
- PROCEDURE BltBitMapRastPort*(
- srcBitMap:BitMapPtr;
- xSrc,ySrc:INTEGER;
- destRP:RastPortPtr;
- xDest,yDest:INTEGER;
- xSize,ySize:INTEGER;
- minterm:CHAR);
- r:A.Regs;
- BEGIN
- r.a[0]:=SYSTEM.VAL(LONGINT,srcBitMap);
- r.d[0]:=xSrc;
- r.d[1]:=ySrc;
- r.a[1]:=SYSTEM.VAL(LONGINT,destRP);
- r.d[2]:=xDest;
- r.d[3]:=yDest;
- r.d[4]:=xSize;
- r.d[5]:=ySize;
- r.d[6]:=ORD(minterm);
- A.LibCall(gfxBase,-606,r)
- END BltBitMapRastPort;
- PROCEDURE BltPattern*(
- rp:RastPortPtr;
- mask:LONGINT;
- xl,yl:INTEGER;
- maxX,maxY:INTEGER;
- byteCnt:INTEGER);
- r:A.Regs;
- BEGIN
- r.a[0]:=mask;
- r.a[1]:=rp;
- r.d[0]:=xl;
- r.d[1]:=yl;
- r.d[2]:=maxX;
- r.d[3]:=maxY;
- r.d[4]:=byteCnt;
- A.LibCall(gfxBase,-312,r)
- END BltPattern;
- PROCEDURE BltTemplate*(
- srcTemplate:LONGINT;
- srcX,srcMod:INTEGER;
- rp:RastPortPtr;
- dstX,dstY:INTEGER;
- sizeX,sizeY:INTEGER);
- r:A.Regs;
- BEGIN
- r.a[0]:=srcTemplate;
- r.d[0]:=srcX;
- r.d[1]:=srcMod;
- r.a[1]:=rp;
- r.d[2]:=dstX;
- r.d[3]:=dstY;
- r.d[4]:=sizeX;
- r.d[5]:=sizeY;
- A.LibCall(gfxBase,-36,r)
- END BltTemplate;
- PROCEDURE ClipBlit*(
- srcRP:RastPortPtr;
- xSrc,ySrc:INTEGER;
- destRP:RastPortPtr;
- xDest,yDest:INTEGER;
- xSize,ySize:INTEGER;
- minterm:CHAR);
- r:A.Regs;
- BEGIN
- r.a[0]:=SYSTEM.VAL(LONGINT,srcRP);
- r.d[0]:=xSrc;
- r.d[1]:=ySrc;
- r.a[1]:=SYSTEM.VAL(LONGINT,destRP);
- r.d[2]:=xDest;
- r.d[3]:=yDest;
- r.d[4]:=xSize;
- r.d[5]:=ySize;
- r.d[6]:=ORD(minterm);
- A.LibCall(gfxBase,-552,r)
- END ClipBlit;
- PROCEDURE CloseFont*(font:TextFontPtr);
- r:A.Regs;
- BEGIN
- r.a[1]:=font;
- A.LibCall(gfxBase,-78,r)
- END CloseFont;
- PROCEDURE DisposeRegion*(region:RegionPtr);
- r:A.Regs;
- BEGIN
- r.a[0]:=region;
- A.LibCall(gfxBase,-534,r)
- END DisposeRegion;
- PROCEDURE Draw*(rp:RastPortPtr; x,y:INTEGER);
- r:A.Regs;
- BEGIN
- r.a[1]:=SYSTEM.VAL(LONGINT,rp);
- r.d[0]:=x;
- r.d[1]:=y;
- A.LibCall(gfxBase,-246,r)
- END Draw;
- PROCEDURE DrawEllipse*(rp:RastPortPtr; x,y,a,b:INTEGER);
- r:A.Regs;
- BEGIN
- r.a[1]:=SYSTEM.VAL(LONGINT,rp);
- r.d[0]:=x;
- r.d[1]:=y;
- r.d[2]:=a;
- r.d[3]:=b;
- A.LibCall(gfxBase,-180,r)
- END DrawEllipse;
- PROCEDURE FreeRaster*(p:PlanePtr; width,height:INTEGER);
- r:A.Regs;
- BEGIN
- r.a[0]:=p;
- r.d[0]:=width;
- r.d[1]:=height;
- A.LibCall(gfxBase,-498,r)
- END FreeRaster;
- PROCEDURE GetRGB4*(colorMap:ColorMapPtr; entry:LONGINT):INTEGER;
- r:A.Regs;
- BEGIN
- r.a[0]:=colorMap;
- r.d[0]:=entry;
- A.LibCall(gfxBase,-582,r);
- RETURN SHORT(r.d[0])
- END GetRGB4;
- PROCEDURE GetRGB32*(colorMap:ColorMapPtr; firstcolor,ncolors:LONGINT; VAR table:ARRAY OF SYSTEM.BYTE);
- r:A.Regs;
- BEGIN
- r.a[0]:=colorMap;
- r.d[0]:=firstcolor;
- r.d[1]:=ncolors;
- r.a[1]:=SYSTEM.ADR(table);
- A.LibCall(gfxBase,-900,r)
- END GetRGB32;
- PROCEDURE GetVPModeID*(vp:ViewPortPtr):LONGINT;
- r:A.Regs;
- BEGIN
- r.a[0]:=vp;
- A.LibCall(gfxBase,-792,r);
- RETURN r.d[0]
- END GetVPModeID;
- PROCEDURE InitBitMap*(VAR bitMap:BitMap; depth,width,height:INTEGER);
- r:A.Regs;
- BEGIN
- r.a[0]:=SYSTEM.ADR(bitMap);
- r.d[0]:=depth;
- r.d[1]:=width;
- r.d[2]:=height;
- A.LibCall(gfxBase,-390,r)
- END InitBitMap;
- PROCEDURE InitRastPort*(VAR rp:RastPort);
- r:A.Regs;
- BEGIN
- r.a[1]:=SYSTEM.ADR(rp);
- A.LibCall(gfxBase,-198,r)
- END InitRastPort;
- PROCEDURE Move*(rp:RastPortPtr; x,y:INTEGER);
- r:A.Regs;
- BEGIN
- r.a[1]:=SYSTEM.VAL(LONGINT,rp);
- r.d[0]:=x;
- r.d[1]:=y;
- A.LibCall(gfxBase,-240,r)
- END Move;
- PROCEDURE NewRegion*():RegionPtr;
- r:A.Regs;
- BEGIN
- A.LibCall(gfxBase,-516,r);
- RETURN r.d[0]
- END NewRegion;
- PROCEDURE OrRectRegion*(region:RegionPtr; rectangle:RectanglePtr):BOOLEAN;
- r:A.Regs;
- BEGIN
- r.a[0]:=region;
- r.a[1]:=rectangle;
- A.LibCall(gfxBase,-510,r);
- RETURN r.d[0]#0
- END OrRectRegion;
- PROCEDURE ReadPixel*(rp:RastPortPtr; x,y:INTEGER):INTEGER;
- r:A.Regs;
- BEGIN
- r.a[1]:=SYSTEM.VAL(LONGINT,rp);
- r.d[0]:=x;
- r.d[1]:=y;
- A.LibCall(gfxBase,-318,r);
- RETURN SHORT(r.d[0])
- END ReadPixel;
- PROCEDURE RectFill*(rp:RastPortPtr; xMin,yMin,xMax,yMax:INTEGER);
- r:A.Regs;
- BEGIN
- r.a[1]:=SYSTEM.VAL(LONGINT,rp);
- r.d[0]:=xMin;
- r.d[1]:=yMin;
- r.d[2]:=xMax;
- r.d[3]:=yMax;
- A.LibCall(gfxBase,-306,r)
- END RectFill;
- PROCEDURE SetAPen*(rp:RastPortPtr; pen:INTEGER);
- r:A.Regs;
- BEGIN
- r.a[1]:=SYSTEM.VAL(LONGINT,rp);
- r.d[0]:=pen;
- A.LibCall(gfxBase,-342,r)
- END SetAPen;
- PROCEDURE SetBPen*(rp:RastPortPtr; pen:INTEGER);
- r:A.Regs;
- BEGIN
- r.a[1]:=SYSTEM.VAL(LONGINT,rp);
- r.d[0]:=pen;
- A.LibCall(gfxBase,-348,r)
- END SetBPen;
- PROCEDURE SetDrMd*(rp:RastPortPtr; drawMode:SHORTINT);
- r:A.Regs;
- BEGIN
- r.a[1]:=SYSTEM.VAL(LONGINT,rp);
- r.d[0]:=drawMode;
- A.LibCall(gfxBase,-354,r)
- END SetDrMd;
- PROCEDURE SetFont*(rp:RastPortPtr; textFont:TextFontPtr);
- r:A.Regs;
- BEGIN
- r.a[1]:=SYSTEM.VAL(LONGINT,rp);
- r.a[0]:=SYSTEM.VAL(LONGINT, textFont);
- A.LibCall(gfxBase,-66,r)
- END SetFont;
- PROCEDURE SetRGB4*(vp:ViewPortPtr; index,red,green,blue:INTEGER);
- r:A.Regs;
- BEGIN
- r.a[0]:=SYSTEM.VAL(LONGINT,vp);
- r.d[0]:=index;
- r.d[1]:=red;
- r.d[2]:=green;
- r.d[3]:=blue;
- A.LibCall(gfxBase,-288,r)
- END SetRGB4;
- PROCEDURE SetRGB32*(vp:ViewPortPtr; index,red,green,blue:LONGINT);
- r:A.Regs;
- BEGIN
- r.a[0]:=SYSTEM.VAL(LONGINT,vp);
- r.d[0]:=index;
- r.d[1]:=red;
- r.d[2]:=green;
- r.d[3]:=blue;
- A.LibCall(gfxBase,-852,r)
- END SetRGB32;
- PROCEDURE Text*(rp:RastPortPtr; string:ARRAY OF CHAR; count:LONGINT);
- VAR r:A.Regs;
- BEGIN
- r.a[1]:=SYSTEM.VAL(LONGINT,rp);
- r.a[0]:=SYSTEM.ADR(string);
- r.d[0]:=count;
- A.LibCall(gfxBase,-60,r)
- END Text;
- PROCEDURE WaitBlit*();
- VAR r:A.Regs;
- BEGIN
- A.LibCall(gfxBase,-228,r)
- END WaitBlit;
- PROCEDURE WritePixel*(rp:RastPortPtr; x,y:INTEGER):BOOLEAN;
- VAR r:A.Regs;
- BEGIN
- r.a[1]:=SYSTEM.VAL(LONGINT,rp);
- r.d[0]:=x;
- r.d[1]:=y;
- A.LibCall(gfxBase,-324,r);
- RETURN r.d[0]#0
- END WritePixel;
- (* New procedures from V39 *)
- PROCEDURE SetWriteMask*(rp:RastPortPtr; Mask:LONGINT)(*:BOOLEAN*);
- VAR r:A.Regs;
- BEGIN
- r.a[0]:=SYSTEM.VAL(LONGINT,rp);
- r.d[0]:=Mask;
- A.LibCall(gfxBase,-984,r);
- (*RETURN r.d[0]#0*) (* SetWriteMask returns, if device supports WriteMask; ignore it *)
- END SetWriteMask;
- PROCEDURE AllocBitMap*(x, y, depth: LONGINT; flags: SET; friendBitMap: BitMapPtr):BitMapPtr;
- VAR r:A.Regs;
- BEGIN
- r.d[0]:=x;
- r.d[1]:=y;
- r.d[2]:=depth;
- r.d[3]:=SYSTEM.VAL(LONGINT, flags);
- r.a[0]:=friendBitMap;
- A.LibCall(gfxBase,-918,r);
- RETURN r.d[0]
- END AllocBitMap;
- PROCEDURE FreeBitMap*(bm: BitMapPtr);
- VAR r:A.Regs;
- BEGIN
- r.a[0]:=bm;
- A.LibCall(gfxBase,-924,r)
- END FreeBitMap;
- PROCEDURE Init;
- LibraryPtr=POINTER TO E.Library;
- lib:LibraryPtr;
- BEGIN
- gfxBase:=E.OpenLibrary(graphicsName,37);
- IF gfxBase=0 THEN HALT(99) END;
- lib:=SYSTEM.VAL(LibraryPtr,gfxBase);
- gfxVersion:=lib.version
- END Init;
- BEGIN
- Init
- END AmigaGraphics.
-